#ifndef N1DATA_H_2006_10_29
#define N1DATA_H_2006_10_29

#include "N1Lib.h"

class N1Object;

class NEXPORT N1Data : public N1Object {
public:
    N1Data();

    N1NAME(N1Data);
    N1DESC;

    /*N1Data(N1UInt32 capacity);
    N1Data(const void *bytes, N1UInt32 length);
    N1Data(const void *bytes, N1UInt32 length, BOOL bFreeWhenDone); //Ctor for attach to data w/o copy
    N1Data(const char* filePath);
    N1Data(const N1Data &data);

    N1UInt32 legth() const;
    const void* bytes() const;

    const char* description() const;

    void  getBytes(void* buffer) const;
    void  getBytes(void* buffer, N1UInt32 length) const;
    void  getBytes(void* buffer, N1Range range) const;

    BOOL  isEqualToData(NSData &other) const;
    NSData* subdataWithRange(NSRange range) const;

    BOOL  writeToFile(const char* path, BOOL atomically) const;

    void* mutableBytes();
    void  setLength(N1UInt32 length);

    void  appendBytes(const void* bytes, N1UInt32 length);
    void  appendData(const N1Data &other);
    void  increaseLengthBy(N1UInt32 extraLength);
    void  replaceBytesInRange(N1Range range, const void* bytes);
    void  resetBytesInRange(N1Range range);
    void  setData(const N1Data &data);
    void  replaceBytesInRange(NSRange range, const void *replacementBytes, N1UInt32 length);
    */
};

#endif //N1DATA_H_2006_10_29
